<?php

namespace backend\models;

use Yii;
use paulzi\materializedPath\MaterializedPathBehavior;
//use paulzi\materializedPath\MaterializedPathQueryTrait;


/**
 * This is the model class for table "page".
 *
 * @property int $id
 * @property string $title
 * @property string $alias
 * @property string $description
 * @property string $content
 * @property string $path
 * @property int $depth
 * @property int $sort
 */
class Page extends \yii\db\ActiveRecord
{
    //use MaterializedPathQueryTrait;

    const DRAFT = 1;
    const PUBLISHED = 0;

    const HIDDEN = 1;
    const VISIBLE = 0;

    const BLANK_VIEW = 'blank';

    public $id_parent_page; 
    
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'page';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['title', 'alias', 'description', 'view'], 'required'],
            [['title', 'alias'], 'trim'],
            //[['alias'], 'unique'],
            [['content'], 'string'],
            [['depth', 'sort', 'id_parent_page', 'is_draft', 'is_hidden', 'id_site'], 'integer'],
            [['title', 'alias', 'description', 'path', 'view'], 'string', 'max' => 255],
            [['depth', 'sort', 'id_parent_page'], 'safe'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'title' => 'Название',
            'alias' => 'Псевдоним',
            'description' => 'Meta - Description',
            'content' => 'Содержимое',
            'path' => 'Путь',
            'depth' => 'Глубина',
            'sort' => 'Сортировка',
            'id_parent_page' => 'Родиельская страница',
            'view' => 'Макет отображения',
            'is_draft' => 'Статус',
            'is_hidden' => 'Страница скрыта?',
            'id_site' => 'Сайт',
        ];
    }

    public function behaviors() {
        return [
            [
                'class' => MaterializedPathBehavior::className(),
                // 'treeAttribute' => 'tree',
            ],
        ];
    }

    public function transactions()
    {
        return [
            self::SCENARIO_DEFAULT => self::OP_ALL,
        ];
    }

    public static function find()
    {
        return new PageQuery(get_called_class());
    }

    // public function afterFind()
    // {
    //     parent::afterFind();

    //     echo $this->parent;
    //     die; 
    //     $this->id_parent_page = 1;
    // }

}